const { DataTypes } = require('sequelize');
const { sequelize } = require('../library/sequelize.js');

// 投票用户模型
const voteUserModel = sequelize.define('ly_vote_user', {
    vote_user_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        primaryKey: true,
        autoIncrement: true,
        comment: '自增主键'
    },
    vote_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '活动ID'
    },
    user_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '关联的微信用户'
    },
    vote_user_name: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '姓名'
    },
    vote_nick_name: {
        type: DataTypes.STRING(255),
        allowNull: false,
        comment: '昵称'
    },
    mobile: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '手机号码：认证标识之一'
    },
    card: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '身份证号：认证标识之一'
    },
    weight: {
        type: DataTypes.TINYINT.UNSIGNED,
        allowNull: false,
        defaultValue: 1,
        comment: '权重:默认1'
    },
    marker_key: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '备注标记的label:桌号，邀请人，部门...'
    },
    marker_value: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '备注标记的value:x桌号，张三，人资...'
    },
    icon_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '标记备注图id'
    },
    is_delete: {
        type: DataTypes.TINYINT,
        allowNull: false,
        comment: '是否删除'
    },
    is_disable: {
        type: DataTypes.TINYINT,
        allowNull: false,
        comment: '是否禁用:禁用项可以在后台修改'
    },
    create_time: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '创建时间'
    },
    update_time: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '最后更新时间'
    }
}, {
    tableName: 'ly_vote_user',
    timestamps: false,
    comment: '投票用户表,用于限定用户投票。'
});

// 获取创建时的默认值
function getCreateDefaults() {
    const now = Math.floor(Date.now() / 1000);
    return {
        create_time: now,
        update_time: now
    };
}

// 获取更新时的默认值
function getUpdateDefaults() {
    return {
        update_time: Math.floor(Date.now() / 1000)
    };
}

// 初始化模型
async function initModel() {
    try {
        // 测试数据库连接
        await sequelize.authenticate();
        console.log('✅ 投票用户模型数据库连接成功');

        // 同步模型到数据库
        await voteUserModel.sync({ alter: false });
        console.log('✅ 投票用户模型同步成功');

        // 输出模型字段信息
        console.log('🔍 投票用户模型字段数量:', Object.keys(voteUserModel.rawAttributes).length);
        console.log('📋 投票用户模型字段列表:', Object.keys(voteUserModel.rawAttributes));

        return true; // 返回成功状态

    } catch (error) {
        console.error('❌ 投票用户模型初始化失败:', error);
        return false; // 返回失败状态
    }
}

module.exports = {
    voteUserModel,
    getCreateDefaults,
    getUpdateDefaults,
    initModel
};